! function() {
	'use strict';

	thin.extData = {
		hosts: thin.data['data-host'] + '/v1/lib',
		script: thin.data['data-host'] + '/v1/script',
		// origin: 'https://da3088.com',
		origin: ''
	}

	thin.imports(thin.extData.hosts + '/tool.js');
	thin.imports(thin.extData.hosts + '/interactive.js');
	thin.imports(thin.extData.hosts + '/queue.js');
	// ----------------------------------------------------
	thin.imports(thin.extData.script + '/store_bets.js');
	thin.imports(thin.extData.script + '/store_opts.js');
	// ----------------------------------------------------
	thin.imports(thin.extData.script + '/issue.js');
	thin.imports(thin.extData.script + '/bet.js');
	thin.imports(thin.extData.script + '/bills.js');
	thin.imports(thin.extData.script + '/lott.js');
	thin.imports(thin.extData.script + '/step.js');
	thin.imports(thin.extData.script + '/format.js');

	// 全局配置文件
	var store_bets = thin.store_bets;
	var store_opts = thin.store_opts;

	thin.use(function() {
		var self = this;

		self.ajax.global({
			state: {
				200: true,
				201: true,
				204: true
			}
		});

		// -----------------------------------------------------------------------------------

		// 主程序
		function main(options) {
			// 获取模式
			if (typeof options.mode == 'undefined' || ['A', 'B'].indexOf(options.mode) == -1) return;
			thin.store_opts['mode'] = options.mode;

			// 获取步长
			if (typeof options.step == 'undefined' || !options.step.length) return;
			thin.store_opts['step'] = options.step;

			// 设置步长
			thin.store_opts.stepIndex = 0;

			// --------------------------------------------------------------------------------

			buss();
		}

		// 主程序
		function buss() {
			var isEnd = false;
			// 上期输赢
			var prevState = '--';

			var queue = new self.Queue(function() {
				// 是否终止
				if (isEnd) {
					console.warn('程序已终止！');
				} else {
					// 10秒执行一次
					setTimeout(buss, 10 * 1000);
				}
			});

			// 获取期号
			queue.add(function(nextStep) {
				thin.requestIssue(function(data) {
					// 获取投注状态
					var betstate = thin.store_opts.betstate[data] || false;
					// 若已投注
					if (betstate) {
						queue.abort();
					} else {
						thin.store_opts['issue'] = data;
						nextStep();
					}
				});
			});

			// 获取上期中奖结果
			queue.add(function(nextStep) {
				// 判断上期有无购买
				if (!thin.store_opts.playId) {
					// 设置回到第一步
					thin.setStep(0);
					nextStep();
					return;
				}
				// 获取上期开奖结果
				thin.requestLott(function(judge) {
					// 根据上期开奖结果设置步长
					thin.setStep(judge);
					prevState = judge ? '赢' : '输';
					nextStep();
				});
			});

			// 判断步长是否到达终点
			queue.add(function(nextStep) {
				if (thin.store_opts.stepIndex >= thin.store_opts.step.length) {
					// 程序终止
					isEnd = true;
					queue.abort();
				} else {
					// 继续
					nextStep();
				}
			});

			// 开始投注
			queue.add(function(nextStep) {
				// 获取投注信息
				var data_opt = thin.getBills();
				thin.submitBet(data_opt, function(judge, msg) {
					if (judge) {
						// 设置期号投注状态
						thin.store_opts.betstate[thin.store_opts.issue] = true;
						// 设置本期期号为上期期号
						thin.store_opts['issue_prev'] = thin.store_opts.issue;
						// 打印信息
						var tips = [
							'期号：' + thin.store_opts.issue,
							'内容：' + thin.format.playId2name(thin.store_opts.playId),
							'金额：' + data_opt.totalMoney,
							'模式：' + thin.store_opts.mode,
							'上期：' + prevState,
							'步长：' + thin.store_opts.stepIndex
						].join('\n');
						console.dir(tips);
						nextStep();
					} else {
						console.warn(msg);
						// 设置期号投注状态
						thin.store_opts.betstate[thin.store_opts.issue] = false;
						queue.abort();
					}
				});
			});

			// loop
			/* queue.add(function(nextStep) {
				var tips = [
					'期号：' + thin.store_opts.issue,
					'模式：' + thin.store_opts.mode,
					'步长：' + thin.store_opts.stepIndex,
					'内容：' + thin.format.playId2name(thin.store_opts.playId),
					'金额：' + 
				];
				
				
				// console.dir('期号：' + thin.store_opts.issue + ' 模式：' + thin.store_opts.mode + ' 步长：' + thin.store_opts.stepIndex + ' ');
				nextStep();
			}); */

			queue.run();
		}

		window.jspk10 = {};
		window.jspk10.bet = main;
	});
}();
